From: Georges Basile Stavracas Neto Date: Tue, 29 Jan 2019 14:22:26 +0000 (-0200) Subject: st: Check for ClutterImage when creating shadow pipelines X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~897^2^2~101 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=8665045326ab475bc63dd6553ee3c38bea8ad824;p=gnome-shell.git st: Check for ClutterImage when creating shadow pipelines _st_create_shadow_pipeline_from_actor creates shadow pipelines from actors. This function special-cases ClutterTexture as a small performance improvement, since we can have access to the CoglTexture easily with it. However, recent commits removed all usage of ClutterTexture from GNOME Shell, rendering this optimization useless. Instead, actors now may have a ClutterImage set as their content, that can be used instead. Replace the check for ClutterTexture with a check for ClutterImage, and use the texture of the image when it is available. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/371 --- diff --git a/src/st/st-private.c b/src/st/st-private.c index cd080d611..aa1e42462 100644 --- a/src/st/st-private.c +++ b/src/st/st-private.c @@ -429,6 +429,7 @@ CoglPipeline * _st_create_shadow_pipeline_from_actor (StShadow *shadow_spec, ClutterActor *actor) { + ClutterContent *image = NULL; CoglPipeline *shadow_pipeline = NULL; float width, height; @@ -439,11 +440,12 @@ _st_create_shadow_pipeline_from_actor (StShadow *shadow_spec, if (width == 0 || height == 0) return NULL; - if (CLUTTER_IS_TEXTURE (actor)) + image = clutter_actor_get_content (actor); + if (image && CLUTTER_IS_IMAGE (image)) { CoglTexture *texture; - texture = clutter_texture_get_cogl_texture (CLUTTER_TEXTURE (actor)); + texture = clutter_image_get_texture (CLUTTER_IMAGE (image)); if (texture && cogl_texture_get_width (texture) == width && cogl_texture_get_height (texture) == height)